package com_1;

public class Box {//定义一个奶箱作为数据共享
    private   int milke;//定义牛奶变量
    private  Boolean state=false;//定义变量表示牛奶初始状态
    public  synchronized void put(int milke){//送奶工存牛奶方法并使用synchronized进行同步
        if(state){//对奶箱的初始状态进行判断如果奶箱有奶就进入等待状态
            try {//
                wait();//让存奶这个动作进入等待状态，等待用户过来取
            } catch (InterruptedException e) {//
                e.printStackTrace();//
            }
        }
        this.milke=milke;//指定成员变量
        System.out.println("送奶工将第"+milke+"瓶送到奶箱");//送奶工将奶送到
        state=true;//送奶工将奶送到后需要将奶箱的状态更改为有奶状态
        notifyAll();//然后唤醒用户过来取奶
    }
    public synchronized  void get(){//定义用户取奶的方法
        if(!state){//用户需要对奶箱状态进行判断
            try {//
                wait();//如果没有奶，则用户进入到等待状态。等待送奶工送奶
            } catch (InterruptedException e) {//
                e.printStackTrace();//
            }
        }
        System.out.println("用户拿到第"+milke+"瓶奶");//如果奶箱有奶，用户则可以从奶箱拿取相应的奶瓶数
        state =false;//用户拿完奶后需要将奶箱状态更改为没有奶的状态
        notifyAll();//然后再唤醒送奶工送奶
    }
}
